[Amazon FSx for NetApp ONTAP] qtree と クォータ を使った書き込み制限をやってみる
ボリューム内のディレクトリごとに書き込めるデータサイズを制限したい
こんにちは、のんピ(@non____97)です。
皆さんはボリューム内のディレクトリごとに書き込めるデータサイズを制限したいなと思ったことはありますか? 私はあります。
ボリュームを細かく分割するのも手ですが、1つのAmazon FSx for NetApp ONTAP(以降FSxN)ファイルシステムにアタッチできるボリュームの上限は500や1,000と物足りない場合があります。
スケールアップファイルシステムあたり最大 500 ボリューム、スケールアウトファイルシステムあたり最大 1,000 ボリュームを作成できます。
また、ボリュームを細かく分割しすぎるとバックアップやSnapMirrorの管理も大変になります。
FSxNではqtreeとクォータ(quota)を使って、ディレクトリごと、ユーザーごと、グループごとの書き込み制限が可能です。Amazon FSx for Windows File Serverではディレクトリ単位では設定できないのでありがたいですね。
以降qtreeとクォータについて紹介します。
いきなりまとめ
- qtreeはONTAPのボリューム内に作成可能な特殊なサブディレクトリ
- qtreeにより以下設定を個別に管理できる
- クォータ
- セキュリティスタイル
- NASアクセス時の権限
- CIFS oplock
- エクスポート
- qtreeをネストさせたり、ディレクトリ内にqtreeを作成することはできない
- 各ボリュームにはデフォルト
qtree0
というqtreeが存在している - qtreeのリネーム、属性の変更、削除はNASアクセスでも行える
- 意図しない削除を防ぐために、NASアクセスによるqtreeの削除はできないようにするのが望ましい
- qtree <-> 一般ディレクトリの変換はできない
- qtree、一般ディレクトリ内のファイルやサブディレクトリを自身でコピーする必要がある
- クォータは以下ごとに書き込み量やファイル数を制限する機能
- ツリークォータ : 各qtree内に対する制限
- ユーザークォータ : 各ユーザーごとに対する制限
- グループクォータ : 各グループごとに対する制限
- クォータはソフトクォータとハードクォータが存在
- ソフトクォータ : 閾値を超過および、閾値以下になった場合に通知するもの
- ハードクォータ : 閾値を超過した際に後続の書き込みを防止するもの
- クォータはクォータルールとして登録する
- クォータルールはクォータポリシーにまとめられる
- SVMは一つのクォータポリシーしか適用できない
- クォータポリシーはSVM間で共有できない
- クォータの適用優先順位は以下のとおりです。
- 対象qtreeのツリークォータ (ファイルの作成または書き込みがqtree0に対して行われる場合は対象外)
- ボリューム上のファイルを所有しているユーザのユーザクォータ
- ボリューム上のファイルを所有しているグループのグループクォータ
- 対象qtree内にあるファイルを所有しているユーザのユーザクォータ (ファイルの作成または書き込みがqtree0に対して行われる場合は対象外)
- 対象qtree内にあるファイルを所有しているグループのグループクォータ (ファイルの作成または書き込みがqtree0に対して行われる場合は対象外)
- クォータの種類は以下の4種類
- デフォルトクォータ : 全てのターゲットに対するクォータ
- 明示的クォータ : 明示的にターゲットを指定した場合のクォータ
- 派生クォータ : デフォルトクォータによって各ターゲットごとに作成されたクォータ
- トラッキングクォータ : 書き込みを制限しないクォータ
- 各クォータタイプごとにデフォルトクォータを設定していない場合にクォータを追加する際は、クォータの初期化が必要
- クォータの初期化をする際はクォータを一度無効化して、再度有効化する必要がある
- デフォルトクォータが存在している場合にクォータを追加する際は、クォータのリサイズで対応可能
- デフォルトツリークォータを用意しておくことで、「ユーザー個人に割り当てたqtreeに一律で20GBのクォータをかける」という実装が簡単に行える
- クォータは論理使用量で判断する
- 重複排除後の物理ストレージ使用量ではない
- qtreeやクォータを設定したボリュームをSnapMirrorした場合の転送先ボリュームの挙動は以下のとおり
- qtree : 転送先でも存在している
- クォータ : クォータルールは設定されていない
qtree とは
概要
qtreeとはONTAPのボリューム内に論理的なサブディレクトリを作成し、以下について個別に管理できる機能です。
- クォータ
- セキュリティスタイル
- NASアクセス時の権限
- CIFS oplock
- エクスポート
FlexVolume内にqtreeを複数用意することで、各ディレクトリごとにきめ細かいクォータを設定できます。
qtreeはユーザーからは通常のディレクトリとして認識されます。通常のディレクトリのようにACLの設定が可能です。
qtreeを作成する際はONTAP CLI(volume qtree create)やONTAP REST APIから作成します。NFSやSMBなどのNASクライアント からは作成できません。
一方でqtreeの削除は通常のディレクトリと同じようにNASクライアントから行えます。注意しましょう。
主な制約事項
主な制約事項は以下のとおりです。
- qtree 名の最大文字数は 64 文字
- qtree名に一部の特殊文字(カンマやスペースなど)は使用しない
- 使用すると、ONTAP機能に問題が発生する可能性がある
- ボリュームジャンクションパスの長さは 255 文字以内
- qtreeの配下にqtreeは作成できない
- ボリュームの任意のディレクトリ配下にqtreeは作成できない
- qtreeから通常のディレクトリに、通常のディレクトリからqtreeには相互に変換できない
- qtreeや通常のディレクトリからNASアクセスによるコピーを行う必要がある
- qtreeはFlexVolume/FlexGroupのボリュームごとに最大4,995個作成可能
一般利用する分で最も注意すべきなのは、ボリュームのルートにしか作成できないことでしょうか。
ジャンクションパスが/user
というボリュームがある時に、各ユーザーごとのqtreeを作成する場合、qtreeのジャンクションパスは以下のような形になります。
/user/user1
/user/user2
/user/user3
以下のようなジャンクションパスのqtreeを作成することはできません。
/user/営業部/user1
/user/システム開発部/user2
また、qtreeの名前自体はUTF-8で指定可能です。そのため、日本語のようなマルチバイト文字を含むディレクトリもqtreeで対応可能です。
ONTAP 9.5 以降では、 4 バイトの UTF-8 エンコード形式の名前がサポートされるようになり、 Basic Multilingual Plane ( BMP ;基本多言語面)以外の Unicode 補助文字を含むファイル、ディレクトリ、ツリーの名前を作成および表示できるようになりました。
UTF-8の4バイト文字を含めたい場合は、ボリュームの文字コードをutf8mb4
に設定しましょう。 設定方法については以下記事が参考になります。
制約事項についての参考情報 :
- ボリュームおよび qtree の名前の制限事項とは何ですか。 - NetApp
- ONTAP がマルチバイトのファイル、ディレクトリ、qtree 名を処理する方法
- ディレクトリの qtree への変換の概要
- AWS のストレージの制限 | NetApp Documentation
クォータ とは
概要
ONTAPにおけるクォータとはディレクトリごと、ユーザーごと、グループごとに書き込み量やファイル数を制限する機能です。
クォータにはソフトクォータとハードクォータがあります。
- ソフトクォータ
- 閾値を超えた場合、SNMPによる通知、EMSに記録する
- 閾値以下になった場合も通知される
- ハードクォータ
- 閾値を超えた場合、SNMPによる通知、EMSに記録をし、後続の書き込みを防止する
FSxNではEMSのイベントログをCloudWatch Logsで拾ったり、EventBridgeで検知することはできません。もし、ソフトクォータの閾値を超過した場合に気づきたい場合は、NetAppのCloud Insightsを使用したり、ONTAP REST APIを使用して定期的にEMSイベントログを拾うLambda関数が必要になります。
なかなか導入のハードルも高いため、FSxNで使うとするとハードクォータのみがほとんどかと思います。
クォータ関連のSNMPトラップやEMSのイベントログは以下をご覧ください。
クォータの実際のルールはクォータポリシーごとに設定します。クォータポリシーは各SVM単位で定義します。異なるSVMと共有することはできないので注意しましょう。また、クォータのルールはボリューム固有の設定です。
クォータタイプ
クォータタイプはユーザークォータ、グループクォータ、ツリークォータの3種類があります。以下のように、それぞれクォータを適用するターゲットを指定することができます。
クォータターゲット | クォータタイプ | ターゲットの指定方法 | 注意事項 |
---|---|---|---|
user | ユーザクォータ | - UNIX ユーザ名 UNIX UID - UID がユーザと一致しているファイルまたはディレクトリ - Windows 2000 より前の形式の Windows ユーザ名 - Windows SID - ユーザの SID によって所有されている ACL を持つファイルまたはディレクトリ |
ユーザクォータは、特定のボリュームまたは qtree に適用できます。 |
group | グループクォータ | - UNIX グループ名 UNIX GID - GID がグループと一致するファイルまたはディレクトリ |
グループクォータは、特定のボリュームまたは qtree に適用できます。
※ ONTAP では、 Windows ID に基づいてグループクォータを適用しません。 |
qtree | ツリークォータ | qtree 名 | ツリークォータは特定のボリュームに適用され、他のボリューム内の qtree には影響しません。 |
"" | - ユーザクォータ - グループクォータ - ツリークォータ |
二重引用符( "" ) | "のクォータターゲットは、デフォルトのクォータを示します。 デフォルトのクォータの場合、クォータタイプはタイプフィー ルドの値によって決定されます。 |
抜粋 : クォータのターゲットとタイプ
クォータタイプごとの優先順位は以下のとおりです。
- 対象qtreeのツリークォータ
- ファイルの作成または書き込みが
qtree0
に対して行われる場合は対象外
- ファイルの作成または書き込みが
- ボリューム上のファイルを所有しているユーザのユーザクォータ
- ボリューム上のファイルを所有しているグループのグループクォータ
- 対象qtree内にあるファイルを所有しているユーザのユーザクォータ
- ファイルの作成または書き込みが
qtree0
に対して行われる場合は対象外
- ファイルの作成または書き込みが
- 対象qtree内にあるファイルを所有しているグループのグループクォータ
- ファイルの作成または書き込みが
qtree0
に対して行われる場合は対象外
- ファイルの作成または書き込みが
参考 : クォータの適用方法
qtree0
というのは各ボリュームに存在しているデフォルトのqtreeです。
ONTAP は、各ボリュームに qtree0 という名前のデフォルトの qtree を作成します。qtree にデータを配置しない場合、データは qtree0 に格納されます。
qtree0
に対するツリークォータ = ボリューム内のqtree以外のディレクトリに対するクォータは効かないので注意しましょう。
NFSとSMBとマルチプロトコルアクセスを使用している環境でユーザークォータを有効にする場合は、クォータルールでユーザーマッピングをするのを忘れずに行いましょう。設定しない場合は同一ユーザーとして認識してくれません。
- The user-mapping parameter is set to "on" in the quota rule for the user.
- The user names have been mapped with the vserver name-mapping commands.
クォータの種類
クォータの種類は以下の4種類があります。
- デフォルトクォータ (default quotas)
- 明示的クォータ (explicit quotas)
- 派生クォータ (derived quotas)
- トラッキングクォータ (tracking quotas)
デフォルトクォータは特定のクォータタイプのすべてのターゲットに適用するクォータルールです。クォータルールのターゲットに""
を指定した場合にデフォルトクォータとなります。
デフォルトクォータを活用することで、大量のターゲットにまとめてクォータを適用できるため、ターゲットごとに個別のクォータルールを設定する必要がありません。「ユーザー個人に割り当てたqtreeに一律で20GBのクォータをかける」ということが非常に簡単に行えます。
特定ターゲットを指定したクォータ(明示的クォータ)を作成した場合、そのクォータの値がデフォルトクォータの値を上書きます。
明示的クォータは特定のクォータターゲットに適用するクォータルールです。特定のターゲットに対するデフォルトクォータを上書きする場合にも使用します。
派生クォータはデフォルトクォータ設定時に各ターゲットに対して派生して設定されるクォータです。同じターゲットにすでに明示的クォータが存在する場合は、派生クォータは作成されません。派生クォータはクォータ指定子(Quota Specifier)が空白または、*
になっています(ツリークォータはqtree名)。
派生クォータは以下のようにクォータタイプによって派生クォータの作成のされ方は異なります。
- デフォルトツリークォータ : ボリューム上のすべてのqtreeに派生デフォルトツリークォータが作成される
- デフォルトユーザクォータ or デフォルトグループクォータ : 同じレベル(ボリュームまたは qtree )でファイルを所有するユーザまたはグループごとに、派生ユーザクォータまたは派生グループクォータが作成される
- デフォルトユーザクォータ or デフォルトグループクォータによって、ツリークォータもあるすべてのqtree : 派生デフォルトユーザクォータまたは派生グループクォータが作成される
トラッキングクォータはリソースの使用量を制限することは行わず、リソースの使用量のレポートを表示するためだけに使うクォータです。
クォータの設定手順
クォータのおおまかな設定手順は以下のとおりです。
- クォータポリシーを作成 (quota policy create)
- SVMのデフォルトのものを使うものはスキップ可
- クォータポリシーをSVMに割り当て (vserver modify)
- SVMのデフォルトのものを使うものはスキップ可
- クォータポリシーにクォータルールを作成 (quota policy rule create)
- クォータルールはボリューム、クォータタイプ、qtree、ターゲットごとに作成
- クォータの有効化
- ボリュームごとに有効化
- デフォルトクォータが存在しない場合など : quota off -> quota on
- 明示的クォータを追加する場合や、クォータルールの値を変更する場合など : quota resize
詳細な手順は以下NetApp KBに記載があります。
デフォルトクォータが存在しない状態で、クォータルールを追加する場合、クォータの初期化(ボリュームのファイルシステムの全スキャン)が必要となります。詳細な条件は以下のとおりです。
- これまでクォータを持っていなかったターゲット(明示的クォータでもデフォルトクォータから派生したクォータでもない)にクォータを作成した場合。
- qtree のセキュリティ形式を UNIX 形式から mixed 形式、または NTFS 形式に変更する場合
- qtree のセキュリティ形式を mixed 形式または NTFS 形式から UNIX 形式に変更した場合
- 複数のユーザを含むクォータターゲットからユーザを削除する場合、またはすでに複数のユーザを含むターゲットにユーザを追加する場合
- クォータに大幅な変更を加える場合
ボリュームのファイルシステムの全スキャンを行う際は、実行完了までクォータは無効となります。
一方、デフォルトクォータが存在しており、派生クォータを追加する場合や、既存のクォータルールの値を変更する場合はボリュームのファイルシステムの全スキャンは行われず、クォータの初期化よりも早く適用できます。詳細な条件は以下のとおりです。
- 既存のクォータを変更する場合
たとえば、既存のクォータの制限を変更する場合などです。- デフォルトクォータまたはデフォルト追跡クォータが適用されているクォータターゲットにクォータを追加した場合
- デフォルトクォータまたはデフォルト追跡クォータのエントリが指定されているクォータを削除した場合
- 別々のユーザクォータを 1 つのマルチユーザクォータに統合した場合
クォータの反映方法は以下NetApp KBも参考になります。
クォータをアクティブ化する方法:
クォータはボリューム レベルでアクティブ化できます。
新しいクォータとクォータに対する変更は、アクティブ化されるまでは有効になりません。
クォータは、初期化(有効化)またはサイズ変更によってアクティブ化されます。クォータをいったん無効にしてもう一度有効にする操作は、再初期化と呼ばれます。
初期化プロセスには、次の2つの部分が含まれます。クォータオンとクォータサイズ変更アクティブ化プロセスの長さとクォータ適用への影響は、アクティブ化のタイプによって異なります。
初期化プロセスには、次の2つの部分が含まれます。 quota onコマンドとボリュームのファイルシステム全体のクォータスキャンスキャンは、quota onコマンドが正常に完了したあとに開始されます。クォータ スキャンには、多少時間がかかる可能性があります。ボリュームに含まれるファイルが多いほど、長い時間がかかります。スキャンが完了するまで、クォータのアクティブ化は完了せず、クォータも適用されません。
サイズ変更プロセスで実行されるのは、quota resizeコマンドだけです。サイズ変更プロセスにはクォータ スキャンが含まれないため、クォータの初期化よりも短い時間で完了します。サイズ変更プロセスではクォータが適用されます。
デフォルトでは、quota onコマンドとquota resizeコマンドはバックグラウンドで実行されるため、他のコマンドを同時に使用できます。サイズ変更または再初期化のタイミング:
クォータのサイズ変更はクォータの初期化よりも高速です。可能なかぎりサイズ変更を使用してください。ただし、サイズ変更を使用できるのは、クォータに対する特定の種類の変更に限られます。
クォータに小規模または大規模な変更を加える場合は、クォータの完全な再初期化が必要です。次の種類の変更をquotasファイルに加える場合、クォータのサイズを変更できます。
既存のクォータの変更。
たとえば、既存のクォータの制限を変更する場合などです。デフォルト クォータまたはデフォルト追跡クォータが適用されているクォータ ターゲットにクォータを追加する場合
デフォルト クォータまたはデフォルト追跡クォータのエントリが指定されているクォータを取り消す場合
単独のユーザ クォータを1つのマルチユーザ クォータに統合する場合
初期化が必要なクォータの変更例:
3つのqtreeを含むボリュームがあり、そのボリューム内のクォータは3つのツリークォータのみであるとします。次の変更を行うことにしました。新しいqtreeを追加し、そのqtreeに対して新しいツリークォータを作成します。
ボリュームのデフォルト ユーザ クォータを追加する
これらのどちらの変更にも、クォータの完全な初期化が必要です。クォータのサイズ変更では有効に機能しません。
都度初期化を回避するために、デフォルトクォータを作成しておくとスムーズでしょう。
qtreeを触ってみる
ボリュームの作成
実際に触ってみましょう。まず、qtreeです。
qtreeを配置するボリュームを用意します。ボリュームはセキュリティスタイルがUNIXとNTFSのものをそれぞれ用意します。
::> set diag Warning: These diagnostic commands are for use by NetApp personnel only. Do you want to continue? {y|n}: y ::*> volume create -vserver svm -volume vol_quota_unix -aggregate aggr1 -state online -type RW -security-style unix -size 10TB -tiering-policy none -snapshot-policy none -junction-path /vol_quota_unix -language utf8mb4 -foreground true [Job 164] Job succeeded: Successful ::*> volume create -vserver svm -volume vol_quota_ntfs -aggregate aggr1 -state online -type RW -security-style ntfs -size 10TB -tiering-policy none -snapshot-policy none -junction-path /vol_quota_ntfs -language utf8mb4 -foreground true [Job 166] Job succeeded: Successful ::*> volume show -vserver svm -volume vol_quota* -state online -fields security-style, junction-path vserver volume security-style junction-path ------- -------------- -------------- --------------- svm vol_quota_ntfs ntfs /vol_quota_ntfs svm vol_quota_unix unix /vol_quota_unix 2 entries were displayed. ::*> volume efficiency show -vserver svm -volume vol_quota* Vserver Volume State Status Progress Policy ---------- ---------------- --------- ----------- ------------------ ---------- svm vol_quota_ntfs Enabled Idle Idle for 00:02:58 auto svm vol_quota_unix Enabled Idle Idle for 00:03:03 auto 2 entries were displayed.
Snapshotポリシーはnoneで、Storage Efficiencyは有効(TSSE)です。
qtreeの作成
qtreeを作成する前にqtreeの状態を確認します。
::*> qtree ? create Create a new qtree delete Delete a qtree modify Modify qtree attributes oplocks Modify qtree oplock mode rename Rename an existing qtree security Modify qtree security style show Display a list of qtrees ::*> qtree show -volume vol_quota* Vserver Volume Qtree Style Oplocks Status ---------- ------------- ------------ ------------ --------- -------- svm vol_quota_ntfs "" ntfs enable normal svm vol_quota_unix "" unix enable normal 2 entries were displayed. ::*> qtree show -volume vol_quota* -instance Vserver Name: svm Volume Name: vol_quota_ntfs Qtree Name: "" Actual (Non-Junction) Qtree Path: /vol/vol_quota_ntfs Security Style: ntfs Oplock Mode: enable User ID: - Group ID: - Unix Permissions: - Qtree Id: 0 Qtree Status: normal Export Policy: default Is Export Policy Inherited: true QoS policy group: - Vserver Name: svm Volume Name: vol_quota_unix Qtree Name: "" Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix Security Style: unix Oplock Mode: enable User ID: root Group ID: root Unix Permissions: ---rwxr-xr-x Qtree Id: 0 Qtree Status: normal Export Policy: default Is Export Policy Inherited: true QoS policy group: - 2 entries were displayed.
""
というqtreeが各ボリュームに存在しています。これはqtree0
です。
それではqtreeを各ボリュームに作成します。
::*> qtree create -volume vol_quota_unix -qtree qtree_unix -security-style unix ::*> qtree create -volume vol_quota_ntfs -qtree qtree_ntfs -security-style ntfs ::*> qtree show -volume vol_quota* Vserver Volume Qtree Style Oplocks Status ---------- ------------- ------------ ------------ --------- -------- svm vol_quota_ntfs "" ntfs enable normal svm vol_quota_ntfs qtree_ntfs ntfs enable normal svm vol_quota_unix "" unix enable normal svm vol_quota_unix qtree_unix unix enable normal 4 entries were displayed. ::*> qtree show -volume vol_quota* -qtree qtree* -instance Vserver Name: svm Volume Name: vol_quota_ntfs Qtree Name: qtree_ntfs Actual (Non-Junction) Qtree Path: /vol/vol_quota_ntfs/qtree_ntfs Security Style: ntfs Oplock Mode: enable User ID: - Group ID: - Unix Permissions: - Qtree Id: 1 Qtree Status: normal Export Policy: default Is Export Policy Inherited: true QoS policy group: - Vserver Name: svm Volume Name: vol_quota_unix Qtree Name: qtree_unix Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix/qtree_unix Security Style: unix Oplock Mode: enable User ID: root Group ID: root Unix Permissions: ---rwxr-xr-x Qtree Id: 1 Qtree Status: normal Export Policy: default Is Export Policy Inherited: true QoS policy group: - 2 entries were displayed.
作成できました。
qtreeをネストすることはできないことも確認しておきましょう。
::*> qtree create -volume vol_quota_unix -qtree qtree_unix/qtree_unix2 -security-style unix Error: "qtree_unix/qtree_unix2" is an invalid value for field "-qtree <qtree name>"
サポートされていないと怒られますね。
NFSからqtreeを確認します。
$ sudo mount -t nfs svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix /mnt/fsxn/vol_quota_unix/ $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 842G 92% /mnt/fsxn/vol_quota_unix $ ls -l /mnt/fsxn/vol_quota_unix/ total 4 drwxr-xr-x. 2 root root 4096 Apr 11 04:57 qtree_unix
通常のディレクトリのように認識されていますね。
NASアクセスによるqtreeの所有者とグループの変更
通常のディレクトリとして認識できるということは、NASアクセスによるqtreeの所有者とグループも変更できるのでしょうか。実際に試してみます。
$ id uid=1001(ssm-user) gid=1001(ssm-user) groups=1001(ssm-user) context=system_u:system_r:unconfined_service_t:s0 $ sudo chown ssm-user:ssm-user /mnt/fsxn/vol_quota_unix/qtree_unix/ $ ls -l /mnt/fsxn/vol_quota_unix/ total 4 drwxr-xr-x. 2 ssm-user ssm-user 4096 Apr 11 04:57 qtree_unix
問題なく変更できました。
ONTAP CLIからqtreeのユーザーとグループを確認すると、uidとgidがchown
で指定したものとなりました。本来であればqtree modifyで変更するべきだと思いますが、問題なさそうです。
::*> qtree show -volume vol_quota_unix -qtree qtree_unix -instance Vserver Name: svm Volume Name: vol_quota_unix Qtree Name: qtree_unix Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix/qtree_unix Security Style: unix Oplock Mode: enable User ID: 1001 Group ID: 1001 Unix Permissions: ---rwxr-xr-x Qtree Id: 1 Qtree Status: normal Export Policy: default Is Export Policy Inherited: true QoS policy group: -
NASアクセスによるqtreeのリネーム
ついでにNASアクセスによるqtreeのリネームを確認します。
本来であればqtree renameで行うべきですが、試してみます。
$ sudo mv /mnt/fsxn/vol_quota_unix/qtree_unix /mnt/fsxn/vol_quota_unix/qtree_unix_renamed $ ls -l /mnt/fsxn/vol_quota_unix/ total 4 drwxr-xr-x. 2 ssm-user ssm-user 4096 Apr 11 04:57 qtree_unix_renamed
NFSでは問題なくできました。
ONTAP CLIからqtreeを確認すると、qtree名がリネーム後のものになっていました。リネームができるのであれば、NASアクセスでメタデータを変更するとqtreeで壊れるということはなさそうです。
::*> qtree show -volume vol_quota_unix -qtree qtree_* -instance Vserver Name: svm Volume Name: vol_quota_unix Qtree Name: qtree_unix_renamed Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix/qtree_unix_renamed Security Style: unix Oplock Mode: enable User ID: 1001 Group ID: 1001 Unix Permissions: ---rwxr-xr-x Qtree Id: 1 Qtree Status: normal Export Policy: default Is Export Policy Inherited: true QoS policy group: -
NASアクセスによるqtreeの削除
NASアクセスによるqtreeの削除も確認します。ONTAP上ではqtreeがゾンビのように残ってしまうのでしょうか。
試してみます。
$ sudo rmdir /mnt/fsxn/vol_quota_unix/qtree_unix_renamed $ ls -l /mnt/fsxn/vol_quota_unix/ total 0
削除できました。
ONTAP CLIからqtreeを確認すると、対象のqtreeは削除されていました。問題なさそうです。
::*> qtree show -volume vol_quota_unix -qtree qtree_* -instance There are no entries matching your query.
一方で、簡単にNASアクセスによってqtreeは削除可能ということが分かりました。実際に利用する際は一般利用者はqtreeを削除できないようにACLを制御する必要がありそうです。
マルチバイト文字を含む名前のqtreeの作成
マルチバイト文字を含む名前のqtreeの作成ができることを確認します。
::*> qtree create -volume vol_quota_unix -qtree qtree_ゆにっくす -security-style unix ::*> qtree show -volume vol_quota_unix -qtree qtree_* -instance Vserver Name: svm Volume Name: vol_quota_unix Qtree Name: qtree_ゆにっくす Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix/qtree_ゆにっくす Security Style: unix Oplock Mode: enable User ID: root Group ID: root Unix Permissions: ---rwxr-xr-x Qtree Id: 1 Qtree Status: normal Export Policy: default Is Export Policy Inherited: true QoS policy group: -
問題なくqtree_ゆにっくす
というqtreeを作成できました。
NFSクライアントからも確認してみます。
$ ls -l /mnt/fsxn/vol_quota_unix/ total 4 drwxr-xr-x. 2 root root 4096 Apr 11 05:08 qtree_ゆにっくす
問題なく認識できていますね。
qtree間のディレクトリの移動
NetApp公式ドキュメントにはqtree間でディレクトリを移動できないと記載がありました。
ディレクトリは qtree 間で移動できません。qtree 間で移動できるのはファイルだけです。
それは困ります。本当にディレクトリの移動ができないか確認します。
まず、移動元となるqtreeを作成します。
::*> qtree create -volume vol_quota_unix -qtree qtree_unix2 -security-style unix
NFSクライアントから作成したqtreeにディレクトリとファイルを作成します。
$ ls -l /mnt/fsxn/vol_quota_unix/ total 8 drwxr-xr-x. 2 root root 4096 Apr 11 05:52 qtree_unix2 drwxr-xr-x. 2 root root 4096 Apr 11 05:08 qtree_ゆにっくす $ sudo mkdir -p /mnt/fsxn/vol_quota_unix/qtree_unix2/dir1/dir2 $ echo "test" | sudo tee -a /mnt/fsxn/vol_quota_unix/qtree_unix2/dir1/dir2/test.txt > /dev/null $ ls -l /mnt/fsxn/vol_quota_unix/qtree_unix2/dir1/dir2 total 0 -rw-r--r--. 1 root root 5 Apr 11 05:56 test.txt
qtree_unix2
内のディレクトリとファイルをqtree_ゆにっくす
に移動させます。
$ sudo mv /mnt/fsxn/vol_quota_unix/qtree_unix2/* /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/ $ ls -lR /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/ /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/: total 4 drwxr-xr-x. 3 root root 4096 Apr 11 05:55 dir1 /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/dir1: total 4 drwxr-xr-x. 2 root root 4096 Apr 11 05:56 dir2 /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/dir1/dir2: total 0 -rw-r--r--. 1 root root 5 Apr 11 05:56 test.txt $ ls -lR /mnt/fsxn/vol_quota_unix/qtree_unix2/ /mnt/fsxn/vol_quota_unix/qtree_unix2/: total 0
問題なく移動できました。あの記述はなんだったのでしょうか。
クォータを触ってみる
ツリークォータの設定
次にクォータを触ってみます。
まず、ツリークォータです。
現在、クォータは適用されていません。
::*> quota report -vserver svm -volume vol_quota_* There are no entries matching your query. ::*> quota show -vserver svm -volume vol_quota* Scan Vserver Volume State Status --------- ------------ --------------- ------ svm vol_quota_ntfs off - svm vol_quota_unix off - 2 entries were displayed. ::*> quota show -vserver svm -volume vol_quota* -instance Vserver Name: svm Volume Name: vol_quota_ntfs Quota State: off Scan Status: - Logging Messages: - Logging Interval: - Sub Quota Status: none Last Quota Error Message: - Collection of Quota Errors: - User Quota enforced: - Group Quota enforced: - Tree Quota enforced: - Extended Policy Name: - Vserver Name: svm Volume Name: vol_quota_unix Quota State: off Scan Status: - Logging Messages: - Logging Interval: - Sub Quota Status: none Last Quota Error Message: - Collection of Quota Errors: - User Quota enforced: - Group Quota enforced: - Tree Quota enforced: - Extended Policy Name: - 2 entries were displayed.
デフォルトのクォータポリシーが存在していることを確認します。
::*> quota policy show Vserver Policy Name Last Modified Policy ID -------------- -------------------- ---------------- --------------- svm default 4/7/2024 01:37:28 12884901889 ::*> quota policy show -instance Vserver: svm Policy Name: default Last Modified: 4/7/2024 01:37:28 Policy ID: 12884901889 ::*> quota policy rule show This table is currently empty.
qtreeごとに1GBの書き込みを制限するデフォルトツリークォータを作成します。
::*> volume quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type tree -target "" -disk-limit 1GB ::*> quota policy rule show Vserver: svm Policy: default Volume: vol_quota_unix Soft Soft User Disk Disk Files Files Type Target Qtree Mapping Limit Limit Limit Limit Threshold ----- -------- ------- ------- -------- ------- ------ ------- --------- tree "" "" - 1GB - - - - ::*> quota policy rule show -instance Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: tree Target: "" Qtree Name: "" User Mapping: - Disk Limit: 1GB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: -
クォータの有効化を行います。
::*> quota on -vserver svm -volume vol_quota_unix [Job 168] Job is queued: "quota on" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm". ::*> job show 168 Owning Job ID Name Vserver Node State ------ -------------------- ---------- -------------- ---------- 168 Quota Operation svm FsxId009351b227391d1f1-01 Success Description: "quota on" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm" ::*> quota show -vserver svm -volume vol_quota_unix -instance Vserver Name: svm Volume Name: vol_quota_unix Quota State: on Scan Status: - Logging Messages: on Logging Interval: 1h Sub Quota Status: none Last Quota Error Message: - Collection of Quota Errors: - User Quota enforced: false Group Quota enforced: false Tree Quota enforced: true Extended Policy Name: -
クォータが有効化されました。
デフォルトツリークォータの動作確認
デフォルトツリークォータの動作確認をします。
現在のレポートを確認します。
::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 0B 1GB 4 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 0B 1GB 1 - qtree_unix2 vol_quota_unix tree * 0B 1GB 0 - * 3 entries were displayed. ::*> quota report -vserver svm -volume vol_quota_unix -instance Vserver Name: svm Volume Name: vol_quota_unix Index: 2305843013508661248 Qtree Name: qtree_ゆにっくす Quota Type: tree Quota Target: 1 Quota Target ID: 1 Disk Space Used: 0B Disk Space Limit: 1GB Files Used: 4 Files Limit: - Disk Space Threshold: - Soft Disk Space Limit: - Soft Files Limit: - Quota Specifier: qtree_ゆにっくす Disk Space Used % Soft Disk Space Limit: - Disk Space Used % Disk Space Threshold: - Disk Space Used % Disk Space Limit: 0% Files Used % Soft File Limit: - Files Used % File Limit: - Vserver Name: svm Volume Name: vol_quota_unix Index: 2305843017803628544 Qtree Name: qtree_unix2 Quota Type: tree Quota Target: 2 Quota Target ID: 2 Disk Space Used: 0B Disk Space Limit: 1GB Files Used: 1 Files Limit: - Disk Space Threshold: - Soft Disk Space Limit: - Soft Files Limit: - Quota Specifier: qtree_unix2 Disk Space Used % Soft Disk Space Limit: - Disk Space Used % Disk Space Threshold: - Disk Space Used % Disk Space Limit: 0% Files Used % Soft File Limit: - Files Used % File Limit: - Vserver Name: svm Volume Name: vol_quota_unix Index: 5764607523034234880 Qtree Name: Quota Type: tree Quota Target: * Quota Target ID: * Disk Space Used: 0B Disk Space Limit: 1GB Files Used: 0 Files Limit: - Disk Space Threshold: - Soft Disk Space Limit: - Soft Files Limit: - Quota Specifier: * Disk Space Used % Soft Disk Space Limit: - Disk Space Used % Disk Space Threshold: - Disk Space Used % Disk Space Limit: 0% Files Used % Soft File Limit: - Files Used % File Limit: - 3 entries were displayed.
各qtreeごとに1GBのクォータが設定されていることや、qtree内のストレージ使用量、ファイルの数が分かりますね。
実際に書き込んでみます。
まず、qtree0に対してはツリークォータが効かないことを確認したいので、ボリュームのルートに書き込みます。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/random_pattern_binary_block_1GiB bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.23195 s, 172 MB/s $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 841G 92% /mnt/fsxn/vol_quota_unix
1GiB問題なく書き込めました。さらに1GiB書き込みます。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/random_pattern_binary_block_1GiB_2 bs=1M count=1024 1024+0 records in 1024+0 records out 1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.42068 s, 167 MB/s $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 840G 92% /mnt/fsxn/vol_quota_unix
クォータ以上の書き込みを行いましたが、制限はされませんね。
クォータのレポートを確認します。
::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 0B 1GB 4 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 0B 1GB 1 - qtree_unix2 vol_quota_unix tree * 0B 1GB 0 - * 3 entries were displayed.
はい、2GiB書き込みましたがレポートとして上がってきていません。このことからqtree0に対してはツリークォータが効かないことが分かりました。
続いて、qtreeに対して書き込みを行います。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB bs=1M count=1024 dd: closing output file '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB': No space left on device $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす total 1.0G drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1 -rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB
書き込みが途中で終了しました。クォータが効いていそうです。
再度1GiBのデータを書き込もうとしてみます。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_2 bs=1M count=1024 dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_2': No space left on device 13+0 records in 12+0 records out 12582912 bytes (13 MB, 12 MiB) copied, 0.0938965 s, 134 MB/s $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす total 1.0G drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1 -rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 0 Apr 11 06:35 random_pattern_binary_block_1GiB_2
ほとんど書き込めていませんね。
クォータレポートを確認します。
::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 1023MB 1GB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 0B 1GB 1 - qtree_unix2 vol_quota_unix tree * 0B 1GB 0 - * 3 entries were displayed. ::*> quota report -vserver svm -volume vol_quota_unix -index 2305843013508661248 Vserver Name: svm Volume Name: vol_quota_unix Index: 2305843013508661248 Qtree Name: qtree_ゆにっくす Quota Type: tree Quota Target: 1 Quota Target ID: 1 Disk Space Used: 1023MB Disk Space Limit: 1GB Files Used: 6 Files Limit: - Disk Space Threshold: - Soft Disk Space Limit: - Soft Files Limit: - Quota Specifier: qtree_ゆにっくす Disk Space Used % Soft Disk Space Limit: - Disk Space Used % Disk Space Threshold: - Disk Space Used % Disk Space Limit: 100% Files Used % Soft File Limit: - Files Used % File Limit: -
書き込んだqtreeqtree_ゆにっくす
のDisk Space Used % Disk Space Limit
が100%となっていることが分かります。クォータがしっかり効いていますね。
EMSイベントログを確認すると、以下のようにツリークォータの上限に達したとの記録がされていました。
::*> event log show Time Node Severity Event ------------------- ---------------- ------------- --------------------------- 4/11/2024 06:34:37 FsxId009351b227391d1f1-01 NOTICE wafl.quota.qtree.exceeded: tid 1: tree quota exceeded on volume vol_quota_unix@vserver:646592b9-f47f-11ee-8e23-0fe9d475982c. Additional warnings will be suppressedfor approximately 60 minutes or until a 'quota resize' is performed. . . (以下略) . .
念の為、もう一つのqtreeにもクォータが効いていることを確認します。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_2GiB bs=1M count=2048 dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_2GiB': No space left on device 1134+0 records in 1133+0 records out 1188036608 bytes (1.2 GB, 1.1 GiB) copied, 6.71292 s, 177 MB/s ::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 1023MB 1GB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 1023MB 1GB 2 - qtree_unix2 vol_quota_unix tree * 0B 1GB 0 - * 3 entries were displayed.
途中で書き込みができなくなりました。問題なく動作していますね。
デフォルトツリークォータのリサイズ
デフォルトツリークォータのリサイズを行います。試しに1GBから500MBに変更します。
::*> quota policy rule modify -policy-name default -volume vol_quota_unix -type tree -target "" -qtree "" -disk-limit 500MB ::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 1023MB 1GB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 1023MB 1GB 2 - qtree_unix2 vol_quota_unix tree * 0B 1GB 0 - * 3 entries were displayed.
はい、ルールを変更しただけではクォータは反映されません。 quota resizeでリサイズします。
::*> quota resize -vserver svm -volume vol_quota_unix [Job 169] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm". ::*> job show 169 Owning Job ID Name Vserver Node State ------ -------------------- ---------- -------------- ---------- 169 Quota Operation svm FsxId009351b227391d1f1-01 Success Description: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm" ::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 1023MB 500MB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 1023MB 500MB 2 - qtree_unix2 vol_quota_unix tree * 0B 500MB 0 - * 3 entries were displayed.
quota resizeを実行することで、クォータルールが反映されました。
明示的クォータの作成
明示的クォータの作成をします。
qtree_ゆにっくす
に対して2GBの制限をします。
::*> volume quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type tree -target "qtree_ゆにっくす" -disk-limit 2GB ::*> quota policy rule show Vserver: svm Policy: default Volume: vol_quota_unix Soft Soft User Disk Disk Files Files Type Target Qtree Mapping Limit Limit Limit Limit Threshold ----- -------- ------- ------- -------- ------- ------ ------- --------- tree "" "" - 500MB - - - - tree qtree_ゆにっくす "" - 2GB - - - - 2 entries were displayed. ::*> quota policy rule show -instance Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: tree Target: "" Qtree Name: "" User Mapping: - Disk Limit: 500MB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: tree Target: qtree_ゆにっくす Qtree Name: "" User Mapping: - Disk Limit: 2GB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - 2 entries were displayed. ::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 1023MB 500MB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 1023MB 500MB 2 - qtree_unix2 vol_quota_unix tree * 0B 500MB 0 - * 3 entries were displayed.
クォータルールを作成されただけでは反映されません。
デフォルトツリークォータが既に存在しているので、初期化ではなくリサイズをします。
::*> quota resize -vserver svm -volume vol_quota_unix [Job 170] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm". ::*> job show 170 Owning Job ID Name Vserver Node State ------ -------------------- ---------- -------------- ---------- 170 Quota Operation svm FsxId009351b227391d1f1-01 Success Description: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm" ::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 1023MB 2GB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 1023MB 500MB 2 - qtree_unix2 vol_quota_unix tree * 0B 500MB 0 - * 3 entries were displayed.
qtree_ゆにっくす
のクォータは2GBになり、他のqtreeはクォータは500MBのままであることを確認できました。
qtree_ゆにっくす
に書き込みます。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_2 bs=1M count=1024 dd: closing output file '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_2': No space left on device $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす total 2.0G drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1 -rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2
クォータで設定したサイズまで書き込めていますね。
レポートからもqtreeに2GB書き込まれていることが分かります。
::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 2.00GB 2GB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 1023MB 500MB 2 - qtree_unix2 vol_quota_unix tree * 0B 500MB 0 - * 3 entries were displayed.
デフォルトユーザークォータの設定
次にデフォルトユーザークォータの設定をします。
各ユーザーそれぞれ1GBまでしか書き込めないようにします。
::*> quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type user -target "" -disk-limit 1GB Error: command failed: "qtree" is a required field ::*> quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type user -target "" -qtree "" -disk-limit 1GB ::*> quota policy rule show -vserver svm Vserver: svm Policy: default Volume: vol_quota_unix Soft Soft User Disk Disk Files Files Type Target Qtree Mapping Limit Limit Limit Limit Threshold ----- -------- ------- ------- -------- ------- ------ ------- --------- tree "" "" - 500MB - - - - tree qtree_ゆにっくす "" - 2GB - - - - user "" "" off 1GB - - - - 3 entries were displayed. ::*> quota policy rule show -vserver svm -instance Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: tree Target: "" Qtree Name: "" User Mapping: - Disk Limit: 500MB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: tree Target: qtree_ゆにっくす Qtree Name: "" User Mapping: - Disk Limit: 2GB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: user Target: "" Qtree Name: "" User Mapping: off Disk Limit: 1GB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - 3 entries were displayed.
クォータの反映をします。
まずはリサイズで試します。
::*> quota resize -vserver svm -volume vol_quota_unix [Job 173] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm". ::*> job show 173 Owning Job ID Name Vserver Node State ------ -------------------- ---------- -------------- ---------- 173 Quota Operation svm FsxId009351b227391d1f1-01 Success Description: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm" ::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix qtree_ゆにっくす tree 1 2.00GB 2GB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 1023MB 500MB 2 - qtree_unix2 vol_quota_unix tree * 0B 500MB 0 - * 3 entries were displayed.
はい、既存のデフォルトユーザークォータは存在しないのでリサイズではクォータの反映ができません。
クォータを初期化するため、一度クォータを無効化して、再度有効化します。
::*> quota off -vserver svm -volume vol_quota_unix [Job 174] Job is queued: "quota off" performed on volume "vol_quota_unix" in Vserver "svm". ::*> job show 174 Owning Job ID Name Vserver Node State ------ -------------------- ---------- -------------- ---------- 174 Quota Operation svm FsxId009351b227391d1f1-01 Success Description: "quota off" performed on volume "vol_quota_unix" in Vserver "svm" ::*> quota report -vserver svm -volume vol_quota_unix There are no entries matching your query. ::*> quota on -vserver svm -volume vol_quota_unix [Job 175] Job is queued: "quota on" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm". ::*> quota report -vserver svm -volume vol_quota_unix Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_unix user root 5.01GB - 11 - vol_quota_unix qtree_ゆにっくす user root 2.00GB - 6 - vol_quota_unix qtree_unix2 user root 1023MB - 2 - vol_quota_unix qtree_ゆにっくす tree 1 2.00GB 2GB 6 - qtree_ゆにっくす vol_quota_unix qtree_unix2 tree 2 1023MB 500MB 2 - qtree_unix2 vol_quota_unix user * 0B 1GB 0 - * vol_quota_unix qtree_ゆにっくす user * 0B 1GB 0 - * vol_quota_unix qtree_unix2 user * 0B 1GB 0 - * vol_quota_unix tree * 0B 500MB 0 - * 9 entries were displayed. ::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 5.01GB - 11 - - svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2.00GB - 6 - - svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 1023MB - 2 - - svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2.00GB 2GB 6 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 1023MB 500MB 2 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 500MB 0 - - * 9 entries were displayed.
クォータルールが反映されましたね。
各qtreeやユーザーとユーザーごとに派生クォータが作成されています。
rootユーザーのdisk-used
が5.01GBに関わらず、qtree_ゆにっくす
とqtree_unix2
のdisk-used
の合計が3GBです。
これはユーザークォータはqtree0
に対しての書き込み量も含まれているためです。デフォルトツリークォータでqtree0
に対する制限は効かないことを試した際に書き込んだ2GBが含まれてます。
デフォルトユーザークォータの動作確認
デフォルトユーザークォータの動作確認です。
レポート上でrootユーザーに対するdisk-limit
のユーザークォータは-
となっています。
これはrootユーザーは派生ユーザークォータによる制限を受けないためです。
派生クォータの設定は、制限やユーザマッピングなど、デフォルトクォータと同じです。たとえば、デフォルトユーザクォータのディスク制限が 50MB でユーザマッピングが有効の場合、作成される派生クォータもディスク制限が 50MB でユーザマッピングが有効になります。
ただし、 3 つの特殊なユーザとグループの場合、派生クォータに制限はありません。次のユーザとグループがデフォルトのユーザクォータまたはグループクォータのレベルでファイルを所有している場合、派生クォータはデフォルトのユーザクォータまたはグループクォータと同じユーザマッピング設定で作成されますが、単なる追跡クォータになります(制限なし)。
- UNIX root ユーザ( UID 0 )
- UNIX ルートグループ( GID 0 )
- Windows BUILTIN\Administrators グループ
Windows グループのクォータはユーザクォータとして追跡されるため、このグループの派生クォータは、デフォルトグループクォータではなくデフォルトユーザクォータから派生するユーザクォータになります。
一方でツリークォータの制約は受けます。
試しに書き込んでみましょう。
$ sudo dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_3 bs=1M count=1024 dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_3': No space left on device 7+0 records in 6+0 records out 6291456 bytes (6.3 MB, 6.0 MiB) copied, 0.0381954 s, 165 MB/s $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす total 2.1G drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1 -rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2
はい、ほとんど書き込めませんでした。レポートからもその様子は分かります。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 5.01GB - 12 - - svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 1023MB - 2 - - svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 1023MB 500MB 2 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 500MB 0 - - * 9 entries were displayed.
デフォルトツリークォータが500MBだと検証がしづらいので、16GBに変更します。
::*> quota policy rule modify -policy-name default -volume vol_quota_unix -type tree -target "" -qtree "" -disk-limit 16GB ::*> quota resize -vserver svm -volume vol_quota_unix [Job 176] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm". ::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 5.01GB - 12 - - svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 1023MB - 2 - - svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 1023MB 16GB 2 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 9 entries were displayed.
デフォルトツリークォータの派生クォータであるqtree_ゆにっくす
のツリークォータが16GBまで書き込めるようになりました。
qtree_ゆにっくす
に対してec2-user
で書き込んでみます。
$ sudo -u ec2-user id uid=1000(ec2-user) gid=1000(ec2-user) groups=1000(ec2-user),4(adm),10(wheel),190(systemd-journal) context=system_u:system_r:unconfined_service_t:s0 $ sudo chmod 777 /mnt/fsxn/vol_quota_unix/qtree_unix2 $ sudo -u ec2-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_1GiB_ec2-user bs=1M count=1024 dd: closing output file '/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_1GiB_ec2-user': Disk quota exceeded $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_unix2 total 2.0G -rw-r--r--. 1 ec2-user ec2-user 1020M Apr 11 07:24 random_pattern_binary_block_1GiB_ec2-user -rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB
ユーザークォータで設定した1GBほど書き込めました。
レポートを確認すると、「ec2-user
のuidである1000
が1GBのクォータがある中、1023MB書き込んだ」と表示されています。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 5.01GB - 12 - - svm vol_quota_unix 4294967296000 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 1023MB - 2 - - svm vol_quota_unix 567244920717312 qtree_unix2 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 2.00GB 16GB 3 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 11 entries were displayed.
ユーザークォータなので、他ユーザーも1GB書き込めるはずです。
ssm-user
からも書き込みます。
$ sudo -u ssm-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_1GiB_ssm-user bs=1M count=1024 dd: closing output file '/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_1GiB_ssm-user': Disk quota exceeded $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_unix2 total 3.0G -rw-r--r--. 1 ec2-user ec2-user 1020M Apr 11 07:24 random_pattern_binary_block_1GiB_ec2-user -rw-r--r--. 1 ssm-user ssm-user 1.0G Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user -rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB
ssm-user
も1GBほど書き込めました。
レポートからも「ssm-user
のuidである1001
が1GBのクォータがある中、1023MB書き込んだ」と表示されています。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 5.01GB - 12 - - svm vol_quota_unix 4294967296000 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 4299262263296 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 1023MB - 2 - - svm vol_quota_unix 567244920717312 qtree_unix2 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 567249215684608 qtree_unix2 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 3.00GB 16GB 4 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 13 entries were displayed.
念の為、rootユーザーはユーザークォータの影響を受けないことを確認します。
$ sudo -u root dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_unix2/random_pattern_binary_block_2GiB_root bs=1M count=2048 2048+0 records in 2048+0 records out 2147483648 bytes (2.1 GB, 2.0 GiB) copied, 13.6265 s, 158 MB/s $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_unix2 total 5.1G -rw-r--r--. 1 ec2-user ec2-user 1020M Apr 11 07:24 random_pattern_binary_block_1GiB_ec2-user -rw-r--r--. 1 ssm-user ssm-user 1.0G Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user -rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB -rw-r--r--. 1 root root 2.0G Apr 11 07:29 random_pattern_binary_block_2GiB_root
はい、デフォルトユーザークォータの1GB以上のデータを書き込めました。
レポートからもrootユーザーがqtree_unix2
が合計3.01GB書き込んでいることが分かります。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 7.02GB - 13 - - svm vol_quota_unix 4294967296000 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 4299262263296 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 3.01GB - 3 - - svm vol_quota_unix 567244920717312 qtree_unix2 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 567249215684608 qtree_unix2 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 2GB 7 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 5.01GB 16GB 5 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 13 entries were displayed.
デフォルトユーザークォータはユーザーごとにボリューム内の全qtree内で書き込めるデータサイズを制限しています。実際に別qtreeにも書き込めなくなっているか確認します。
下準備としてqtree_ゆにっくす
の明示的ツリークォータを2GBから4GBに変更します。
::*> quota policy rule modify -policy-name default -volume vol_quota_unix -type tree -target "qtree_ゆにっくす" -qtree "" -disk-limit 4GB ::*> quota resize -vserver svm -volume vol_quota_unix [Job 177] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm". ::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 7.02GB - 13 - - svm vol_quota_unix 4294967296000 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 4299262263296 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 3.01GB - 3 - - svm vol_quota_unix 567244920717312 qtree_unix2 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 567249215684608 qtree_unix2 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 4GB 7 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 5.01GB 16GB 5 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 13 entries were displayed.
この状態で書き込みます。
$ sudo chmod 777 /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす $ sudo -u ec2-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user bs=1M count=1024 dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user': Disk quota exceeded 10+0 records in 9+0 records out 9437184 bytes (9.4 MB, 9.0 MiB) copied, 0.0637273 s, 148 MB/s $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす total 2.1G drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1 -rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2 -rw-r--r--. 1 root root 5.3M Apr 11 07:14 random_pattern_binary_block_1GiB_3 -rw-r--r--. 1 ec2-user ec2-user 10M Apr 11 07:34 random_pattern_binary_block_1GiB_ec2-user
ほとんど書き込めていません。ユーザーごとにボリューム内で書き込める
明示的ユーザークォータの設定と動作確認
次に、明示的ユーザークォータを試してみます。
ユーザークォータの優先順位は以下のとおりです。
- ボリューム上のファイルを所有しているユーザのユーザクォータ
- 対象qtree内にあるファイルを所有しているユーザのユーザクォータ
qtreeに対して明示的ユーザークォータを設定しても、デフォルトユーザークォータが優先されそうです。実際に確認します。
ec2-user
のuid1000
はqtreeqtree_ゆにっくす
に2GBまで書き込めるような明示的ユーザークォータを設定します。
::*> quota policy rule create -vserver svm -policy-name default -volume vol_quota_unix -type user -target "1000" -qtree "qtree_ゆにっくす" -disk-limit 2GB ::*> quota policy rule show Vserver: svm Policy: default Volume: vol_quota_unix Soft Soft User Disk Disk Files Files Type Target Qtree Mapping Limit Limit Limit Limit Threshold ----- -------- ------- ------- -------- ------- ------ ------- --------- tree "" "" - 16GB - - - - tree qtree_ゆにっくす "" - 4GB - - - - user "" "" off 1GB - - - - user 1000 qtree_ゆにっくす off 2GB - - - - 4 entries were displayed. ::*> quota policy rule show -instance Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: tree Target: "" Qtree Name: "" User Mapping: - Disk Limit: 16GB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: tree Target: qtree_ゆにっくす Qtree Name: "" User Mapping: - Disk Limit: 4GB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: user Target: "" Qtree Name: "" User Mapping: off Disk Limit: 1GB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - Vserver: svm Policy Name: default Volume Name: vol_quota_unix Type: user Target: 1000 Qtree Name: qtree_ゆにっくす User Mapping: off Disk Limit: 2GB Files Limit: - Threshold for Disk Limit: - Soft Disk Limit: - Soft Files Limit: - Extended Policy Name: - 4 entries were displayed. ::*> quota resize -vserver svm -volume vol_quota_unix [Job 178] Job is queued: "quota resize" performed for quota policy "default" on volume "vol_quota_unix" in Vserver "svm". ::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 7.02GB - 13 - - svm vol_quota_unix 4294967296000 user 1000 1000 1023MB 1GB 2 - - * svm vol_quota_unix 4299262263296 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 285769944006656 qtree_ゆにっくす user 1000 1000 20KB 2GB 1 - - 1000 svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 3.01GB - 3 - - svm vol_quota_unix 567244920717312 qtree_unix2 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 567249215684608 qtree_unix2 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 4GB 8 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 5.01GB 16GB 5 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 14 entries were displayed.
実際に書き込んでみます。
$ sudo -u ec2-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user bs=1M count=1024 dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user': Disk quota exceeded 12+0 records in 11+0 records out 11534336 bytes (12 MB, 11 MiB) copied, 0.0720174 s, 160 MB/s $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす total 2.1G drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1 -rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2 -rw-r--r--. 1 root root 5.3M Apr 11 07:14 random_pattern_binary_block_1GiB_3 -rw-r--r--. 1 ec2-user ec2-user 0 Apr 11 07:42 random_pattern_binary_block_1GiB_ec2-user $ sudo -u ec2-user dd if=/dev/urandom of=/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user_2 bs=1M count=1024 dd: error writing '/mnt/fsxn/vol_quota_unix/qtree_ゆにっくす/random_pattern_binary_block_1GiB_ec2-user_2': Disk quota exceeded 15+0 records in 14+0 records out 14680064 bytes (15 MB, 14 MiB) copied, 0.0882806 s, 166 MB/s $ ls -lh /mnt/fsxn/vol_quota_unix/qtree_ゆにっくす total 2.1G drwxr-xr-x. 3 root root 4.0K Apr 11 05:55 dir1 -rw-r--r--. 1 root root 1021M Apr 11 06:34 random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1021M Apr 11 06:51 random_pattern_binary_block_1GiB_2 -rw-r--r--. 1 root root 5.3M Apr 11 07:14 random_pattern_binary_block_1GiB_3 -rw-r--r--. 1 ec2-user ec2-user 0 Apr 11 07:42 random_pattern_binary_block_1GiB_ec2-user -rw-r--r--. 1 ec2-user ec2-user 0 Apr 11 07:44 random_pattern_binary_block_1GiB_ec2-user_2
やはり、ほとんど書き込めていませんね。
レポートからもその様子が分かります。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 7.02GB - 13 - - svm vol_quota_unix 4294967296000 user 1000 1000 1023MB 1GB 3 - - * svm vol_quota_unix 4299262263296 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 285769944006656 qtree_ゆにっくす user 1000 1000 0B 2GB 2 - - 1000 svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 3.01GB - 3 - - svm vol_quota_unix 567244920717312 qtree_unix2 user 1000 1000 1023MB 1GB 1 - - * svm vol_quota_unix 567249215684608 qtree_unix2 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 4GB 9 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 5.01GB 16GB 5 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 14 entries were displayed.
NetApp公式ドキュメントに記載の以下内容と同じようなシチュエーションです。
最も上限の低いクォータが、最初に超過するクォータとはかぎりません。たとえば、ボリューム vol1 のユーザクォータが 100GB の場合、 また、ボリューム vol1 に含まれる qtree q2 のユーザクォータは 20GB 、そのユーザがすでに 80GB を超えるデータをボリューム vol1 に(ただし qtree q2 以外)書き込んでいる場合、ボリュームの制限を最初に超過する可能性があります。
ユーザークォータを使用する場合、デフォルトユーザークォータは慎重に設定する方が良さそうです。
qtreeをマウントした場合の使用率の見え方
ふと、qtreeをマウントした場合の使用率が気になったので確認をしてみます。
$ sudo umount /mnt/fsxn/vol_quota_unix/ $ sudo mount -t nfs svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_ゆにっくす /mnt/fsxn/vol_quota_unix/ $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_ゆにっくす nfs4 4.0G 2.0G 2.0G 50% /mnt/fsxn/vol_quota_unix
ボリュームに割り当てたサイズではなく、デフォルトツリークォータがサイズとして見えていますね。
なお、ec2-user
やssm-user
などユーザークォータが効いているユーザーにスイッチしてからdf
しましたが、結果は変わりありませんでした。
$ sudo umount /mnt/fsxn/vol_quota_unix/ $ sudo mount -t nfs svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 /mnt/fsxn/vol_quota_unix/ $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 nfs4 16G 5.1G 11G 32% /mnt/fsxn/vol_quota_unix $ sudo -u ec2-user df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 nfs4 16G 5.1G 11G 32% /mnt/fsxn/vol_quota_unix
クォータは重複排除後のデータサイズで判定しているのか
クォータは重複排除後のデータサイズで判定しているのか気になったので確認します。
ec-user
が書き込めるように、既存のファイルを削除します。
$ rm -rf /mnt/fsxn/vol_quota_unix/random_pattern_binary_block_1GiB_ec2-user $ ls -l /mnt/fsxn/vol_quota_unix/ total 4202496 -rw-r--r--. 1 ssm-user ssm-user 1073741824 Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user -rw-r--r--. 1 root root 1082654720 Apr 11 06:39 random_pattern_binary_block_2GiB -rw-r--r--. 1 root root 2147483648 Apr 11 07:29 random_pattern_binary_block_2GiB_root
レポートから、ec2-user(uid : 1000)の使用しているサイズが0Byteになったことを確認します。
::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 7.02GB - 13 - - svm vol_quota_unix 4294967296000 user 1000 1000 0B 1GB 2 - - * svm vol_quota_unix 4299262263296 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 285769944006656 qtree_ゆにっくす user 1000 1000 0B 2GB 2 - - 1000 svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 3.01GB - 3 - - svm vol_quota_unix 567249215684608 qtree_unix2 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 4GB 9 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 4.01GB 16GB 4 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 13 entries were displayed.
0埋めした512MBのファイルを書き込みます。
$ sudo -u ec2-user dd if=/dev/zero of=/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-user bs=1M count=512 512+0 records in 512+0 records out 536870912 bytes (537 MB, 512 MiB) copied, 2.57542 s, 208 MB/s $ ls -lh /mnt/fsxn/vol_quota_unix/ total 4.6G -rw-r--r--. 1 ssm-user ssm-user 1.0G Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user -rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB -rw-r--r--. 1 root root 2.0G Apr 11 07:29 random_pattern_binary_block_2GiB_root -rw-r--r--. 1 ec2-user ec2-user 512M Apr 11 07:58 zero_padding_block_512MiB_ec2-user $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 nfs4 16G 4.6G 12G 29% /mnt/fsxn/vol_quota_unix
レポートを確認すると、512MB重複排除されec2-user
で書き込んだ物理ストレージ消費量は0になるはずですが、514.0MBと記録されていますね。クォータは論理サイズで判定していそうです。
::*> volume show -volume vol_quota_unix -fields available, filesystem-size, total, used, percent-used, performance-tier-inactive-user-data, performance-tier-inactive-user-data-percent, size, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared,logical-used, logical-used-percent,logical-used-by-afs, logical-available, physical-used, physical-used-percent, tiering-policy vserver volume size available filesystem-size total used percent-used dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared physical-used physical-used-percent logical-used logical-used-percent logical-available logical-used-by-afs tiering-policy performance-tier-inactive-user-data performance-tier-inactive-user-data-percent ------- -------------- ---- --------- --------------- ------ ------ ------------ ------------------ -------------------------- ------------------- ------------- --------------------- ------------ -------------------- ----------------- ------------------- -------------- ----------------------------------- ------------------------------------------- svm vol_quota_unix 10TB 833.6GB 10TB 9.50TB 8.18GB 0% 512MB 6% 0B 8.18GB 0% 8.68GB 0% - 8.68GB none 0B 0% ::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 7.02GB - 13 - - svm vol_quota_unix 4294967296000 user 1000 1000 514.0MB 1GB 3 - - * svm vol_quota_unix 4299262263296 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 285769944006656 qtree_ゆにっくす user 1000 1000 0B 2GB 2 - - 1000 svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 3.01GB - 3 - - svm vol_quota_unix 567244920717312 qtree_unix2 user 1000 1000 514.0MB 1GB 1 - - * svm vol_quota_unix 567249215684608 qtree_unix2 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 4GB 9 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 4.51GB 16GB 5 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 14 entries were displayed.
再度0埋めした512MBのファイルを書き込みます。
$ sudo -u ec2-user dd if=/dev/zero of=/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-user_2 bs=1M count=512 dd: closing output file '/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-user_2': Disk quota exceeded $ ls -lh /mnt/fsxn/vol_quota_unix/ total 5.1G -rw-r--r--. 1 ssm-user ssm-user 1.0G Apr 11 07:26 random_pattern_binary_block_1GiB_ssm-user -rw-r--r--. 1 root root 1.1G Apr 11 06:39 random_pattern_binary_block_2GiB -rw-r--r--. 1 root root 2.0G Apr 11 07:29 random_pattern_binary_block_2GiB_root -rw-r--r--. 1 ec2-user ec2-user 512M Apr 11 07:58 zero_padding_block_512MiB_ec2-user -rw-r--r--. 1 ec2-user ec2-user 508M Apr 11 08:00 zero_padding_block_512MiB_ec2-user_2 $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/qtree_unix2 nfs4 16G 5.1G 11G 32% /mnt/fsxn/vol_quota_unix
ディスクスペースがないとなりましたね。
レポートでもしっかり1GB使用していることが分かります。
::*> volume show -volume vol_quota_unix -fields available, filesystem-size, total, used, percent-used, performance-tier-inactive-user-data, performance-tier-inactive-user-data-percent, size, dedupe-space-saved, dedupe-space-saved-percent, dedupe-space-shared,logical-used, logical-used-percent,logical-used-by-afs, logical-available, physical-used, physical-used-percent, tiering-policy vserver volume size available filesystem-size total used percent-used dedupe-space-saved dedupe-space-saved-percent dedupe-space-shared physical-used physical-used-percent logical-used logical-used-percent logical-available logical-used-by-afs tiering-policy performance-tier-inactive-user-data performance-tier-inactive-user-data-percent ------- -------------- ---- --------- --------------- ------ ------ ------------ ------------------ -------------------------- ------------------- ------------- --------------------- ------------ -------------------- ----------------- ------------------- -------------- ----------------------------------- ------------------------------------------- svm vol_quota_unix 10TB 833.6GB 10TB 9.50TB 8.18GB 0% 1019MB 11% 0B 8.18GB 0% 9.18GB 0% - 9.18GB none 0B 0% ::*> quota report -vserver svm -volume vol_quota_unix -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ----- ---- ---------- ------------ --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_unix 0 user root 0 7.02GB - 13 - - svm vol_quota_unix 4294967296000 user 1000 1000 1023MB 1GB 4 - - * svm vol_quota_unix 4299262263296 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 281474976710656 qtree_ゆにっくす user root 0 2GB - 7 - - svm vol_quota_unix 285769944006656 qtree_ゆにっくす user 1000 1000 0B 2GB 2 - - 1000 svm vol_quota_unix 562949953421312 qtree_unix2 user root 0 3.01GB - 3 - - svm vol_quota_unix 567244920717312 qtree_unix2 user 1000 1000 1023MB 1GB 2 - - * svm vol_quota_unix 567249215684608 qtree_unix2 user 1001 1001 1023MB 1GB 1 - - * svm vol_quota_unix 2305843013508661248 qtree_ゆにっくす tree 1 1 2GB 4GB 9 - - qtree_ゆにっくす svm vol_quota_unix 2305843017803628544 qtree_unix2 tree 2 2 5.01GB 16GB 6 - - qtree_unix2 svm vol_quota_unix 3458764513820540928 user * * 0B 1GB 0 - - * svm vol_quota_unix 3459045988797251584 qtree_ゆにっくす user * * 0B 1GB 0 - - * svm vol_quota_unix 3459327463773962240 qtree_unix2 user * * 0B 1GB 0 - - * svm vol_quota_unix 5764607523034234880 tree * * 0B 16GB 0 - - * 14 entries were displayed.
ユーザークォータはqtree0にも動作することを確認
ユーザークォータはqtree0
にも動作することを確認します。
ユーザークォータが効いているボリュームをマウントし、ボリュームのルートに512MBのファイルを作成しようとします。
$ sudo umount /mnt/fsxn/vol_quota_unix $ sudo mount -t nfs svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix/ /mnt/fsxn/vol_quota_unix/ $ df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 826G 92% /mnt/fsxn/vol_quota_unix $ sudo -u ec2-user df -hT -t nfs4 Filesystem Type Size Used Avail Use% Mounted on svm-0365ba78d7ad91348.fs-009351b227391d1f1.fsx.us-east-1.amazonaws.com:/vol_quota_unix nfs4 9.5T 8.7T 826G 92% /mnt/fsxn/vol_quota_unix $ ls -l /mnt/fsxn/vol_quota_unix total 2105432 drwxrwxrwx. 2 root root 4096 Apr 11 08:00 qtree_unix2 drwxrwxrwx. 3 root root 4096 Apr 11 07:44 qtree_ゆにっくす -rw-r--r--. 1 root root 1073741824 Apr 11 06:31 random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1073741824 Apr 11 06:32 random_pattern_binary_block_1GiB_2 $ sudo chmod 777 /mnt/fsxn/vol_quota_unix $ sudo -u ec2-user dd if=/dev/zero of=/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-users bs=1M count=512 dd: error writing '/mnt/fsxn/vol_quota_unix/zero_padding_block_512MiB_ec2-users': Disk quota exceeded 54+0 records in 53+0 records out 55574528 bytes (56 MB, 53 MiB) copied, 0.152904 s, 363 MB/s $ ls -l /mnt/fsxn/vol_quota_unix total 2105432 drwxrwxrwx. 2 root root 4096 Apr 11 08:00 qtree_unix2 drwxrwxrwx. 3 root root 4096 Apr 11 07:44 qtree_ゆにっくす -rw-r--r--. 1 root root 1073741824 Apr 11 06:31 random_pattern_binary_block_1GiB -rw-r--r--. 1 root root 1073741824 Apr 11 06:32 random_pattern_binary_block_1GiB_2 -rw-r--r--. 1 ec2-user ec2-user 0 Apr 12 02:32 zero_padding_block_512MiB_ec2-users
はい、ほとんど書き込めませんでした。
ユーザークォータをボリューム全体に効かせたい場合は、qtreeを作成する必要はないことが分かります。
デフォルトユーザークォータの確認 (SMBの場合)
NFSのパターンばかり試しましたが、SMBでも試してみましょう。
下準備でqtreeのパスとするファイル共有を作成します。SMBサーバーは以下記事のとおり、既にドメイン参加しています。
::*> cifs server show Server Status Domain/Workgroup Authentication Vserver Name Admin Name Style ----------- --------------- --------- ---------------- -------------- svm SMB-SHARE up CORP domain ::*> cifs share create -vserver svm -share-name quota_ntfs -path /vol_quota_ntfs/qtree_ntfs ::*> cifs share show -share-name quota_ntfs Vserver Share Path Properties Comment ACL -------------- ------------- ----------------- ---------- -------- ----------- svm quota_ntfs /vol_quota_ntfs/ oplocks - Everyone / Full Control qtree_ntfs browsable changenotify show-previous-versions
デフォルトユーザークォータを作成します。
::*> quota policy rule create -vserver svm -policy-name default -volume vol_quota_ntfs -type user -target "" -qtree "" -disk-limit 1GB ::*> quota policy rule show -vserver svm -volume vol_quota_ntfs Vserver: svm Policy: default Volume: vol_quota_ntfs Soft Soft User Disk Disk Files Files Type Target Qtree Mapping Limit Limit Limit Limit Threshold ----- -------- ------- ------- -------- ------- ------ ------- --------- user "" "" off 1GB - - - - ::*> quota on -vserver svm -volume vol_quota_ntfs [Job 179] Job is queued: "quota on" performed for quota policy "default" on volume "vol_quota_ntfs" in Vserver "svm". ::*> quota report -vserver svm -volume vol_quota_ntfs Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_ntfs user BUILTIN\Administrators 0B - 2 - vol_quota_ntfs user * 0B 1GB 0 - * 2 entries were displayed.
設定されましたね。
ドメインユーザーtest-user01
でRDP接続をして、1GiBのファイルを書き込みます。
> Get-ChildItem Env:\USERNAME Name Value ---- ----- USERNAME test-user01 > New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\SMB-SHARE\quota_ntfs" -Persist Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- Z 0.00 1.00 FileSystem \\SMB-SHARE\quota_ntfs > fsutil file createnew Z:\fsutil_file_test-user01.txt 1073741824 Error: There is not enough space on the disk.
スペースがないと弾かれました。ユーザークォータが効いていそうです。
レポートを確認すると、そもそも書き込まれていません。
::*> quota report -vserver svm -volume vol_quota_ntfs Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_ntfs user BUILTIN\Administrators 0B - 2 - vol_quota_ntfs user * 0B 1GB 0 - * 2 entries were displayed.
1GiBではなく、1GB書き込んでみます。
> fsutil file createnew Z:\fsutil_file_test-user01.txt 1000000000 File Z:\fsutil_file_test-user01.txt is created > ls Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 4/11/2024 8:36 AM 1000000000 fsutil_file_test-user01.txt > Get-PSDrive -PSProvider FileSystem Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- C 17.84 12.16 FileSystem C:\ Users\test-user01 Z 0.93 0.07 FileSystem \\SMB-SHARE\quota_ntfs
書き込まれましたね。Free (GB)
が0.07なので、ユーザークォータがしっかり効いていることが分かります。
エクスプローラーでは以下のように、空き容量が少ないと赤く警告してくれています。
レポートからもドメインユーザーtest-user01
が957.4MB書き込んだことが分かります。
::*> quota report -vserver svm -volume vol_quota_ntfs Vserver: svm ----Disk---- ----Files----- Quota Volume Tree Type ID Used Limit Used Limit Specifier ------- -------- ------ ------- ----- ----- ------ ------ --------- vol_quota_ntfs user BUILTIN\Administrators 0B - 2 - vol_quota_ntfs user CORP\test-user01 957.4MB 1GB 1 - * vol_quota_ntfs user * 0B 1GB 0 - * 3 entries were displayed. ::*> quota report -vserver svm -volume vol_quota_ntfs -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ------------- ---- ---------- ---------------------- --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_ntfs 2473901162496 user BUILTIN\Administrators S-1-5-32-544 0B - 2 - - svm vol_quota_ntfs 61211873902592 user CORP\test-user01 S-1-5-21-38571244-2121234638-1230449559-1606 957.4MB 1GB 1 - - * svm vol_quota_ntfs 3458764513820540928 user * * 0B 1GB 0 - - * 3 entries were displayed.
別のユーザーでも試します。
> Get-ChildItem Env:\USERNAME Name Value ---- ----- USERNAME test-user02 > New-PSDrive -Name "Z" -PSProvider FileSystem -Root "\\SMB-SHARE\quota_ntfs" -Persist Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- Z 0.00 1.00 FileSystem \\SMB-SHARE\quota_ntfs > fsutil file createnew Z:\fsutil_file_test-user02.txt 1000000000 File Z:\fsutil_file_test-user02.txt is created > ls Z:\ Directory: Z:\ Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 4/11/2024 8:36 AM 1000000000 fsutil_file_test-user01.txt -a---- 4/11/2024 8:40 AM 1000000000 fsutil_file_test-user02.txt > Get-PSDrive -PSProvider FileSystem Name Used (GB) Free (GB) Provider Root CurrentLocation ---- --------- --------- -------- ---- --------------- C 17.85 12.15 FileSystem C:\ Users\test-user02 Z 0.93 0.07 FileSystem \\SMB-SHARE\quota_ntfs
ユーザーごとにクォータを認識していそうですね。
レポートは以下のとおりです。
::*> quota report -vserver svm -volume vol_quota_ntfs -fields vserver, volume, index, tree, quota-type, quota-target, quota-target-id, disk-used, disk-limit, files-used, file-limit, threshold,quota-specifier vserver volume index tree quota-type quota-target quota-target-id disk-used disk-limit files-used file-limit threshold quota-specifier ------- -------------- ------------- ---- ---------- ---------------------- --------------- --------- ---------- ---------- ---------- --------- --------------- svm vol_quota_ntfs 2473901162496 user BUILTIN\Administrators S-1-5-32-544 0B - 2 - - svm vol_quota_ntfs 61211873902592 user CORP\test-user01 S-1-5-21-38571244-2121234638-1230449559-1606 957.4MB 1GB 1 - - * svm vol_quota_ntfs 61216168869888 user CORP\test-user02 S-1-5-21-38571244-2121234638-1230449559-1607 957.4MB 1GB 1 - - * svm vol_quota_ntfs 3458764513820540928 user * * 0B 1GB 0 - - * 4 entries were displayed.
qtreeやクォータを設定したボリュームをSnapMirrorしてみる
SnapMirrorの実行
qtreeやクォータを設定したボリュームをSnapMirrorした際の挙動はどうなるのでしょうか。
試してみます。
::*> volume create -vserver svm -volume vol_quota_unix_dst -aggregate aggr1 -state online -type DP -size 4GB -tiering-policy none -autosize-mode grow [Job 184] Job succeeded: Successful ::*> snapmirror create -source-path svm:vol_quota_unix -destination-path svm:vol_quota_unix_dst -policy MirrorAllSnapshots Operation succeeded: snapmirror create for the relationship with destination "svm:vol_quota_unix_dst". ::*> snapmirror initialize -destination-path svm:vol_quota_unix_dst Operation is queued: snapmirror initialize of destination "svm:vol_quota_unix_dst". ::*> snapmirror show -destination-path svm:vol_quota_unix_dst Source Path: svm:vol_quota_unix Source Cluster: - Source Vserver: svm Source Volume: vol_quota_unix Destination Path: svm:vol_quota_unix_dst Destination Cluster: - Destination Vserver: svm Destination Volume: vol_quota_unix_dst Relationship Type: XDP Relationship Group Type: none Managing Vserver: svm SnapMirror Schedule: - SnapMirror Policy Type: async-mirror SnapMirror Policy: MirrorAllSnapshots Tries Limit: - Throttle (KB/sec): unlimited Consistency Group Item Mappings: - Current Transfer Throttle (KB/sec): unlimited Mirror State: Uninitialized Relationship Status: Transferring File Restore File Count: - File Restore File List: - Transfer Snapshot: snapmirror.646592b9-f47f-11ee-8e23-0fe9d475982c_2163179401.2024-04-11_085150 Snapshot Progress: 0B Total Progress: 0B Network Compression Ratio: 1:1 Snapshot Checkpoint: 0B Newest Snapshot: - Newest Snapshot Timestamp: - Exported Snapshot: - Exported Snapshot Timestamp: - Healthy: true Relationship ID: b8d55938-f7e0-11ee-8e23-0fe9d475982c Source Vserver UUID: 646592b9-f47f-11ee-8e23-0fe9d475982c Destination Vserver UUID: 646592b9-f47f-11ee-8e23-0fe9d475982c Current Operation ID: bc12c7bf-f7e0-11ee-8e23-0fe9d475982c Transfer Type: initialize Transfer Error: - Last Transfer Type: - Last Transfer Error: - Last Transfer Error Codes: - Last Transfer Size: - Last Transfer Network Compression Ratio: - Last Transfer Duration: - Last Transfer From: - Last Transfer End Timestamp: - Unhealthy Reason: - Progress Last Updated: 04/11 08:51:50 Relationship Capability: 8.2 and above Lag Time: - Current Transfer Priority: normal SMTape Operation: - Destination Volume Node Name: FsxId009351b227391d1f1-01 Identity Preserve Vserver DR: - Number of Successful Updates: 0 Number of Failed Updates: 0 Number of Successful Resyncs: 0 Number of Failed Resyncs: 0 Number of Successful Breaks: 0 Number of Failed Breaks: 0 Total Transfer Bytes: 0 Total Transfer Time in Seconds: 0 Source Volume MSIDs Preserved: - OpMask: ffffffffffffffff Is Auto Expand Enabled: - Percent Complete for Current Status: - ::*> snapmirror show -destination-path svm:vol_quota_unix_dst -fields state, status, total-progress, progress-last-updated source-path destination-path state status total-progress progress-last-updated ------------------ ---------------------- ------------ ------ -------------- --------------------- svm:vol_quota_unix svm:vol_quota_unix_dst Snapmirrored Idle - -
SnapMirrorの転送は問題なく完了しました。
SnapMirror転送先ボリュームのqtreeの確認
SnapMirror転送先ボリュームのqtreeを確認します。
::*> qtree show -vserver svm -volume vol_quota_unix_dst Vserver Volume Qtree Style Oplocks Status ---------- ------------- ------------ ------------ --------- -------- svm vol_quota_unix_dst "" unix enable readonly svm vol_quota_unix_dst qtree_unix2 unix enable readonly svm vol_quota_unix_dst qtree_ゆにっくす unix enable readonly 3 entries were displayed. ::*> qtree show -vserver svm -volume vol_quota_unix_dst -instance Vserver Name: svm Volume Name: vol_quota_unix_dst Qtree Name: "" Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix_dst Security Style: unix Oplock Mode: enable User ID: root Group ID: root Unix Permissions: ---rwxr-xr-x Qtree Id: 0 Qtree Status: readonly Export Policy: default Is Export Policy Inherited: true QoS policy group: - Vserver Name: svm Volume Name: vol_quota_unix_dst Qtree Name: qtree_unix2 Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix_dst/qtree_unix2 Security Style: unix Oplock Mode: enable User ID: root Group ID: root Unix Permissions: ---rwxrwxrwx Qtree Id: 2 Qtree Status: readonly Export Policy: default Is Export Policy Inherited: true QoS policy group: - Vserver Name: svm Volume Name: vol_quota_unix_dst Qtree Name: qtree_ゆにっくす Actual (Non-Junction) Qtree Path: /vol/vol_quota_unix_dst/qtree_ゆにっくす Security Style: unix Oplock Mode: enable User ID: root Group ID: root Unix Permissions: ---rwxrwxrwx Qtree Id: 1 Qtree Status: readonly Export Policy: default Is Export Policy Inherited: true QoS policy group: - 3 entries were displayed.
作成したqtreeが存在しています。qtreeを作り直すという手間はなさそうです。
SnapMirror転送先ボリュームのクォータルールの確認
SnapMirror転送先ボリュームのクォータルールを確認します。
::*> quota show vol_quota* Scan Vserver Volume State Status --------- ------------ --------------- ------ svm vol_quota_ntfs on - svm vol_quota_unix on - svm vol_quota_unix_dst off - 3 entries were displayed. ::*> quota policy rule show -vserver svm Vserver: svm Policy: default Volume: vol_quota_ntfs Soft Soft User Disk Disk Files Files Type Target Qtree Mapping Limit Limit Limit Limit Threshold ----- -------- ------- ------- -------- ------- ------ ------- --------- user "" "" off 1GB - - - - Vserver: svm Policy: default Volume: vol_quota_unix Soft Soft User Disk Disk Files Files Type Target Qtree Mapping Limit Limit Limit Limit Threshold ----- -------- ------- ------- -------- ------- ------ ------- --------- tree "" "" - 16GB - - - - tree qtree_ゆにっくす "" - 4GB - - - - user "" "" off 1GB - - - - user 1000 qtree_ゆにっくす off 2GB - - - - 5 entries were displayed.
クォータルールはSnapMirrorのクォータルールは設定されていません。
そのため、SnapMirrorを用いてDRや移行をする際は都度クォータルールを設定してあげる必要があります。
まずはツリークォータから試してみると良さそう
Amazon FSx for NetApp ONTAPにおけるqtreeとクォータを使った書き込み制限をやってみました。
個人的にはツリークォータから試してみると良さそうだなと感じました。qtreeが分かれているのであれば、ユーザーごとやグループごとにqtreeをまたがって、書き込みの制限をしたいケースは稀かと思います。
ユーザークォータが活躍するのはqtreeを用意するのが手間であり、サクッとWorkSpacesやAppStream2.0の移動ユーザープロファイル(roaming user profile)の使用量をユーザーごとに制限をしたい場合かと思います。
おおよそ需要があるのは「ディレクトリごとに書き込めるサイズを制限したい」だと考えます。そのような場合にツリークォータは刺さります。ツリークォータは明示的クォータを設定すれば微調整も簡単なのでおすすめです。
この記事が誰かの助けになれば幸いです。
以上、AWS事業本部 コンサルティング部の のんピ(@non____97)でした!